A digital video signal stored on a DVD-ROM (digital versatile disk-read only memory) is arranged as blocks of ECC (error correcting code) data. As depicted in FIG. 1 according to the Background Art, an ECC block 100 includes 2048 scrambled user-data bytes treated as an array having 192 rows and 172 columns (where each column is one byte wide) of main data 102. The ECC-encodation of the user-data widens each of the 192 rows by adding 10 bytes of PI (parity inner code) data 104 and lengthens each of the 172 columns by adding 16 rows of PO (parity outer code) data 106.
FIG. 2 is a block diagram of a DVD-device (player/recorder) 202 according to the Background Art. DVD-device 202 includes an ECC decoder 204 and a first memory 206 external to ECC decoder 204. Hereafter, memory 206 will be referred to as external memory 206. ECC decoder 204 includes: a demodulator 208; an ECC engine 210; and a second memory 212 (hereafter referred to as internal memory 212 because it is internal to ECC decoder 204). ECC engine 210 includes: PI-syndrome generator 214; and PO-syndrome generator 216. As is known, a syndrome is a product of a matrix multiplication, which is used to identify which of several potentially-noise-corrupted candidate pieces of data represents the true data. More particularly, a syndrome is the product of a parity check matrix multiplied by a vector of candidate data.
Demodulator 208 reads and demodulates blocks of ECC data from a DVD 200, and stores the demodulated ECC blocks in external memory 204. A more primitive, older version of DVD-device 202 decoded an ECC block via ECC engine 210 as follows: (1) generate the PI-syndrome via PI-syndrome generator 214; (2) temporarily store the PI-syndrome and the ECC block in internal memory 212; (3) perform PI-correction upon the entire ECC block; (4) overwrite, in internal memory 212, the entire ECC block with entire PI-corrected block; (5) generate the PO-syndrome via PO-syndrome generator 216; (6) temporarily store the PO-syndrome in internal memory 212; (7) perform PO-correction upon the entire PI-corrected block; and (7) store the PO-corrected block in external memory 204. The PO-corrected block represents the decoded DVD data, which can be output from external memory 206 to a host.
The older version of DVD-device 202 had an advantage of only requiring a single ECC engine 210. But it had a greater disadvantage that it required a large internal memory 212 (e.g., 40 k bytes SRAM) in order to temporarily store the PI-corrected block. As the size of internal memory 212 represents a significant portion of the total cost of DVD-device 202, efforts were made to reduce the size of internal memory 212.
It was recognized that decoding could be performed with adequate speed if (1) only the PO-syndrome was stored in internal memory 212 while the PI-corrected block was stored in external memory 206, and (2) a second ECC engine was provided. This conferred the benefit of significantly reducing the size of internal memory 212 down to 6 k bytes. The second ECC engine makes it possible to generate a PO-syndrome for block(k) in parallel with PO-correcting block(k−1).